<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 当then和catch和finally中如果没有处理当前promise实例状态的回调函数,则直接穿透
        const p1 = new Promise((resolve, reject) => {
                try {
                    console.log('开始请求');
                    // throw new Error('网络出现问题')
                    setTimeout(() => {
                        console.log('a数据请求成功');
                        // 请求成功
                        resolve({
                            token: 'dgeobnernblev'
                        })
                    }, 1000)
                } catch (e) {
                    // 如果请求失败则返回失败的信息
                    reject(e.massage)
                }
            })
            // 返回fulfilled  1
            .then(value => {
                return 1
            })
            // 穿透
            .catch(value => {
                return 2
            })
            // 返回fulfiled 3
            .then(value => {
                return 3
            })
            // 穿透
            .catch(velue => {
                return 4
            })

        console.log('p1', p1); //fulfilled  3

        const p2 = new Promise((resolve, reject) => {
                resolve(1)
            })
            // 返回fulfilled  1
            .then(2)
            // 穿透
            .catch(3)
            // 穿透 返回 返回fulfilled  1
            .finally(4)

        console.log('p2', p2);



        const p3 = new Promise((resolve, reject) => {
                try {
                    console.log('开始请求A数据');
                    setTimeout(() => {
                        console.log('a请求成功');
                        resolve('shuju')
                    }, 1200)
                } catch (e) {
                    reject(e.massage)
                }
            })
            .then((value) => {
                return 1
            })
            // 穿透
            .catch((value) => {
                return 2
            })
            // 成功3
            .then((value)=>{
                return 3
            })
            // 穿透
            .catch((value)=>{
                return 4
            })
            console.log('p3',p3);  //成功3
    </script>
</body>

</html>